The timing between the testbench and the design must be carefully synchronized.
At the cycle level, signals need to be driven and sampled at the correct time relative to the clock.

In Verilog, nonblocking assignments (<=) helped mitigate this when the testbench drove the DUT.
However, it was still not guaranteed that the testbench sampled the latest driven value from the design.

SystemVerilog introduces constructs that improve timing control for communication between the testbench and design.